
function defineReactive(_data,key,value){
    Object.defineProperty(_data,key,{
        get(){
            console.log("正在获取" + key + "的值");
            return value;
        },
        set(newVal) {
            if (newVal === value) return;

            console.log("正在设置" + key + "的值");
            value = newVal;
        }
    })
}

function observe(_data){
    for (let key of Object.keys(_data)){
        defineReactive(_data,key,_data[key])
    }
}



function Vue(options) {
    this._data = options.data;

    for (let key of Object.keys(this._data)){
        Object.defineProperty(this, key,{
            get(){
                return this._data[key]
            },
            set(newVal) {
                this._data[key] = newVal
            }
        })
    }
      //拿到_data的数据开始进行响应式操作，我们首先把响应式操作的代码放在observe函数中
      observe(this._data);
}

const vm = new Vue({
    data : {
        count : 1,
        course : {
            type : 'easy',
            name: 'vue'
        }
    }
})
console.log(vm);

function huoqu(){
    console.log(vm.count);
}

function shezhi(){
    vm.count++;
}

// huoqu();
shezhi();
